Don't let a TestOps outage crash the whole report - #819
Merged
Conversation
createLaunch/startUpload/createSession had no error handling at all: if TestOps is unreachable exactly when the launch is created, the exception propagates uncaught out of the plugin's start()/update()/done() lifecycle hooks. That crashes report generation for every other plugin too (awesome, csv, dashboard, ...), not just the TestOps upload. Track whether the launch was actually started; skip update()/done() work entirely if it wasn't, and catch+log failures in launch/session creation and CI upload stop instead of letting them bubble up.
Allure perf metricsGenerated at:
Artifacts: allure-perf-metrics |
epszaw
approved these changes
Jul 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Found while live-testing the upload retry/pacing work (#818) against a local TestOps instance: pointing the plugin at an unreachable endpoint crashed the entire report generation, not just the TestOps upload — other plugins (awesome, csv, dashboard, ...) failed too with
plugin error: state is empty.Root cause:
createLaunch,startUpload, andcreateSessionhad no error handling at all. If TestOps is unreachable exactly when the launch/session is being created, the exception propagates uncaught out of the plugin'sstart()/update()/done()lifecycle hooks, which corrupts the shared plugin-state loop for every other plugin in the same run.Changes
#launchStarted);update()/done()skip their work entirely (with a verbose log) if it wasn't.createLaunch+startUpload(in#startUpload()) andcreateSession(in#upload()) are now wrapped in try/catch: failures are logged and the plugin gracefully no-ops for that stage instead of throwing.stopUploadindone()gets the same treatment for symmetry.Test plan
yarn vitest runinpackages/plugin-testops— all tests pass (updated 9update/donetests that called the lifecycle hooks directly without a precedingstart(), which is unrealistic given the new guard)tsc --noEmit— cleanoxlint— no new warningsstart()now resolves normally and logsFailed to create TestOps launch: ...instead of throwing